var users;//变量的类型由值决定
var data;//  undifined  栈内存中分配
// json 数组 在堆内存中，独立于users，data之外
//users，data，都是对json数组的引用
users = [
    {
        id: 1,
        name: '楚子航',
        hometown: '中国',
    },
    {
        id: 2,
        name: '源稚生',
        hometown: '日本',
    },
    {
        id: 3,
        name: '恺撒',
        hometown: '意大利',
    },
]//存的是地址 指向堆内存中的json数组
//如何真正的拷贝一个对象？
//向堆内存申请一个新的空间，存储拷贝后的数据
var data = JSON.parse(JSON.stringify(users))
data[0].skill = ["剑道","暴血"];
console.log(data,users);
//data 被成功修改；users 保持不变，说明深拷贝生效！
//序列化 
console.log(JSON.stringify(users),typeof JSON.stringify(users));
//JSON.stringify(users)：将变量 users 转换为 JSON 字符串格式（前提是 users 是一个可以被序列化的对象，比如数组、普通对象等）。
//typeof JSON.stringify(users)：获取该转换结果的数据类型。

console.log(JSON.parse(JSON.stringify(users)));
//JSON.parse(JSON.stringify(users))：将 JSON 字符串转换回 JavaScript 对象。
//输出的是一个真正的 JavaScript 对象（数组），不再是字符串；可以直接访问属性